#pragma once

#include<iostream>
#include<unordered_map>
#include<functional>
#include<ctime>
#include<sys/types.h>
#include<unistd.h>



using task_t = std::function<void()>;

void DownLoad()
{
	std::cout << "下载任务...,pid:" << getpid() << std::endl;
}
void Log()
{
	std::cout << "日志任务...,pid:" << getpid() << std::endl;
}
void Sql()
{
	std::cout << "数据库任务...,pid:" << getpid() << std::endl;
}

static int number = 0;
class TaskManger
{
public:
	TaskManger()
	{
		srand(time(nullptr));
		InsertTask(DownLoad);
		InsertTask(Log);
		InsertTask(Sql);
	}
	void InsertTask(task_t t)
	{
		tasks[number++] = t;
	}
	int SelectTask()
	{
		return rand() % number;
	}
	void Excute(int number)
	{
		if(tasks.find(number) == tasks.end()) return;
		tasks[number]();
	}
	~TaskManger()
	{

	}

private:
	std::unordered_map<int,task_t> tasks;
};

TaskManger tm;